/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ufc.quixada.adrs.comandos;

import br.ufc.quixada.adrs.interfaces.Comando;
import br.ufc.quixada.adrs.model.Administrador;
import br.ufc.quixada.adrs.model.Adrs;
import br.ufc.quixada.adrs.model.Perfil;
import br.ufc.quixada.adrs.model.Supervisor;
import br.ufc.quixada.adrs.model.Usuario;
import br.ufc.quixada.adrs.model.Visitante;
import br.ufc.quixada.adrs.service.UsuarioService;
import br.ufc.quixada.adrs.util.Msg;
import br.ufc.quixada.adrs.util.UtilAdrs;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Escritorio projetos
 */
public class CmdLogin implements Comando {

    public String executa(HttpServletRequest request, HttpServletResponse response) {
        //System.out.println("-->"+UtilAdrs.criptografar("bbadrsufc"));
        HttpSession session = request.getSession(true);
        String login = request.getParameter("login");
        String senha = request.getParameter("senha");
        String conta = request.getParameter("conta");

        if (senha == null || login == null || conta == null || senha.trim().isEmpty()
                || login.trim().isEmpty() || conta.trim().isEmpty()) {
            session.setAttribute("erro", Msg.REQUIRED_FIELDS);

        }
        if (UtilAdrs.verificarSQLInjection(login)) {
            session.setAttribute("erro", Msg.SQL_INJECTION_ERROR);
        } else {
            Usuario user = new Usuario();
            user.setLogin(login);
            user.setSenha(UtilAdrs.criptografar(senha));
            UsuarioService userService = new UsuarioService();
            Perfil perfil = userService.validarUsuario(user, conta);

            if (perfil == null || perfil.getAtivo() == false) {
                session.setAttribute("erro", Msg.LOGIN_ERROR);
            } else if (perfil instanceof Visitante) {
                session.setAttribute("user", perfil);
                return "/visit/visit_index.jsp";
            } else if (perfil instanceof Adrs) {
                session.setAttribute("user", perfil);
                return "/adrs/index.jsp";
            } else if (perfil instanceof Administrador) {
                session.setAttribute("user", perfil);
                return "/admin/admin_index.jsp";
            } else if (perfil instanceof Supervisor) {
                session.setAttribute("user", perfil);
                return "/supervisor/supervisor_index.jsp";
            }
        }
        return "/index.jsp";
    }
}
